The ABox class provides a pair of methods to get and set various characteristics or properties of the ABox. These properties allow you, the application programmer, to specify the root of the topic/slide folder tree, if the ABox should be modal, moveable modal, or modeless, if it should behave as a splash screen that waits for a click, shows for a brief time then vanishes, or vanishes under application control (useful for initialization time), etc. The methods you use to alter these properties are, appropriately named, GetProperty and SetProperty, and are shown below as prototypes:

OSErr ABox::GetProperty (ABProperty prop, void *ptr, long *ptrSize);
OSErr ABox::SetProperty (ABProperty prop, void *ptr, long ptrSize);

The list of properties is provided in the ABox.h file; the code fragment below is an example of how to setup some of the various properties of the ABox [ the code has been reformatted to fit into the ABox more easily so you can read it better; really, the actual code is much neater, I promise ;^) ]:

OSErr

PrepareABox (ABox *abox, 
             ABoxSplashTimeType splashTimeSeconds, 
             ABoxModalIndicator modality, 
             FSSpecPtr homeSpec)

OSErr            error = noErr;

StringHandle

   nameAndVersion = 
                    (StringHandle)NewHandleClear(sizeof(Str255));
StringHandle

   modalityString = 
                    (StringHandle)NewHandleClear(sizeof(Str255));
ABIndex

      firstItem = 1;
ABoxTextFontType textFace = 0;
ABoxTextFontType textSize = 9;
ABoxTextFontType textFont = geneva;

UpdateWindowUPP

windowUpdater = NewWindowUpdateProc(HandleUpdate);

//
begin here...

if (!abox)
   return paramErr;

error = abox->SetProperty (kABoxModalIndicator, 
                           &modality, 
                           kABoxModalIndicatorSize);
error = abox->SetProperty (kABoxSplashTimeSeconds, 
                           &splashTimeSeconds,
                           sizeof(splashTimeSeconds));
error = abox->SetProperty (kABoxHomeFolder, 
                           homeSpec, 
                           kABoxHomeFolderSize);
error = abox->SetProperty (kABoxAppResFile, 
                           &gAppResFile, 
                           sizeof(gAppResFile));
error = abox->SetProperty (kABoxFirstTopicNumber, 
                           &firstItem, 
                           sizeof(firstItem));
error = abox->SetProperty (kABoxFirstSlideNumber, 
                           &firstItem, 
                           sizeof(firstItem));
error = abox->SetProperty (kABoxTextFont, 
                           &textFont, 
                           sizeof(textFont));
error = abox->SetProperty (kABoxTextFace, 
                           &textFace, 
                           sizeof(textFace));
error = abox->SetProperty (kABoxTextSize, 
                           &textSize, 
                           sizeof(textSize));
error = abox->SetProperty (kABoxUpdater, 
                           &windowUpdater, 
                           kABoxUpdaterSize);

switch (splashTimeSeconds)

   case
kABoxNoSplash:
      SetString (nameAndVersion, 
                 "\pNo splash screen.");
      break;
   case
kABoxWaitForClickSplash:
      SetString (nameAndVersion,
                 "\pWait for click splash screen...please click.");
      break;
   case
kABoxWaitForApplicationSplash:
      SetString (nameAndVersion,
                 "\pApplication controlled splash screen...");
      break;
   default:
      SetString (nameAndVersion,
                 "\pTimed splash screen...just watch...");
      break;
 // end switch block

switch (modality)

   case
kABoxModal:
      SetString (modalityString,
                 "\pModal Dialog");
      break;
   case
kABoxModeless:
      SetString (modalityString, 
                 "\pModeless Dialog");
      break;
   case
kABoxMoveableModal:
      SetString (modalityString, 
                 "\pMoveable Modal Dialog");
      break;
   default:
      SetString (modalityString,
                 "\pClueless Dialog");
      break;
 // end switch block

error = HandAndHand ((Handle)modalityString, 
                     (Handle)nameAndVersion);

HLock ((Handle)nameAndVersion);
error = abox->SetProperty (kABoxAppNameAndVersion, 

    *nameAndVersion, 

   **nameAndVersion + 1);
HUnlock ((Handle)nameAndVersion);

HLock ((Handle)modalityString);
error = abox->SetProperty (kABoxWindowTitle, 
                           *modalityString, 
                           **modalityString + 1);
HUnlock ((Handle)modalityString);

return error;

 // end PrepareABox

Remember: this is just an example. You should check out the example program "ABoxText" and its source for a real world example of how to implement the ABox.